package com.ditian.http.apienc;

import com.alibaba.fastjson.JSONObject;
import com.ditian.code.ErrorMessage;
import com.ditian.http.Key;
import com.ditian.http.Response;
import com.ditian.http.api.BodyApi;
import com.ditian.ret.body.BodyDectRet;
import com.ditian.ret.body.BodySegmentRet;

public class BodyApiEnc {

	private static BodyApi api = new BodyApi(Key.API_KEY, Key.API_SECRET);
	
	/**
	 * 人体检测
     * @param imageUrl 图片的网络地址，和fileByte，image_base64三选一上传
     * @param fileByte 本地图片的二进制数据，和imageUrl，image_base64三选一上传
     * @param image_base64 图片的base64格式数据，和fileByte，imageUrl三选一上传
     * @param return_attributes 是否检测并返回根据行人特征判断出的年龄，服装颜色属性，需要将需要检测的属性组织成一个用逗号分隔的字符串
	 * @return
	 */
	public static BodyDectRet HumanBodyDect(String imageUrl,byte [] fileByte,String image_base64, String return_attributes){
		
		try {
			Response response = api.HumanBodyDetect(imageUrl, fileByte, image_base64, return_attributes);
			if(response!=null){
				String json = response.getJson();
				int status = response.getStatus();
				BodyDectRet ret = JSONObject.parseObject(json, BodyDectRet.class);
				if(status!=200&&ret!=null){
					ret.setError(ErrorMessage.messageOf(status, ret.getErrorMessage()));
				}
				return ret;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	/**
	 * 人像扣图
	 * 
	 * @param imageUrl
	 *            图片的网络地址，和fileByte，image_base64三选一上传
	 * @param fileByte
	 *            本地图片的二进制数据，和imageUrl，image_base64三选一上传
	 * @param image_base64
	 *            图片的base64格式数据，和fileByte，imageUrl三选一上传
	 * @return 返回结果，Response实例
	 * @throws Exception
	 */
    public BodySegmentRet HumanBodySegment(String imageUrl, byte[] fileByte, String image_base64) {
    	try {
    		
			Response response = api.HumanBodySegment(imageUrl, fileByte, image_base64);
			if(response!=null){
				String json = response.getJson();
				int status = response.getStatus();
				BodySegmentRet ret = JSONObject.parseObject(json, BodySegmentRet.class);
				if(status!=200&&ret!=null){
					ret.setError(ErrorMessage.messageOf(status, ret.getErrorMessage()));
				}
				return ret;
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
    	return null;
    }
}
